#ifndef PLAYLIST_H
#define PLAYLIST_H

#include <list>
#include <string>
#include <sstream>

#include "Song.h"
#include "Observable.h"

class Playlist : public Observable
{
	public:
		Playlist();
		
		void addSong(Song s);
		int removeSong(std::string filename);
		int voteSong(std::string filename);
		std::string getMostVotesSong();
		
		void setPlaying(Song s);
		Song getPlaying();

        std::list<Song> copySongList ();
		std::string parseToString();

        enum EventCodes { SongAdded, SongRemoved };
	
	private:
		std::list<Song> playlist_;
		Song playing_;
};

#endif
